package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

public class StudentDao {
    private static Student[] stus = new Student[5];

    public boolean addStudent(Student stu) {
        //1创建学生对象数组

        //2 添加学生到数组
        //2.1 定义变量index =-1,假设数组已经全部存满,没有null的元素
        int index = -1;
        //2.2 遍历数组
        for (int i = 0; i < stus.length; i++) {
            //2.3 拿到每一个索引位置的元素
            Student student = stus[i];
            //2.4 判断当前元素是否为null
            if (student == null) {
                index = i;
                break;

            }
        }

        if (index == -1) {
            return false;
        } else {
            stus[index] = stu;
            return true;
        }

    }

    public Student[] findAllStudents() {
        return stus;
    }


    //库管中的删除功能
    public void deleteStudentById(String delId) {
        //1.找到当前要删除的学号对应的学生对象在数组容器中索引位置
        int index = getIdex(delId);
        //2.用null去覆盖掉该索引位置的学生对象,从而达到删除效果
        stus[index] = null;
    }
    //根据学号查找对应学生对象在数组容器中的索引位置
    public int getIdex(String id){
        //1.先假设要查找的学号不存在,index先记录-1
        int index = -1;
        //2.遍历数组容器
        for (int i = 0; i < stus.length; i++) {
            //2.1 拿到每一个学生对象
            Student stu = stus[i];
            //2.2 判断当前学生对象的学号和要查找的学号是否相同
            if (stu != null && stu.getId().equals(id)){
                //相同,则说明要查找的学号存在,则修改标记为当前学生对象的索引
                index = i;
                break;
            }
        }
        //3.返回index即可
        return index;
    }

        // 库管类中的修改功能
    public void updateStudentById(String updateId,Student newStu) {
        //1.通过要修改的学号查找对应学生对象在数组容器中的索引位置
        int index = getIdex(updateId);
        //2.将newStu 去覆盖掉该索引位置的旧对象,从而达到修改效果
         stus[index] = newStu;
    }
}
